package algorithm.search;

public class SearchUtil {

	/**
	 * 配列arrayの中からstrを線形検索するメソッド
	 *
	 * @param array
	 * @param str
	 * @return
	 */
	static int linearSearchStr(String[] array, String str) {
		int i = 0;
		int n = array.length;

		if (str == null) {
			return -1;
		}

		while (true) {
			if (i == n) {
				return -1;
			}
			if (str.equals(array[i])) {
				return i;
			}
			i++;
		}
	}

	/**
	 * 配列arrayの中からstrを番兵法で検索するメソッド
	 * @param array
	 * @param str
	 * @return
	 */
	static int seqSearchSenStr(String[] array, String str) {
		int i = 0;
		// 番兵のインデックス
		int n = array.length - 1;
		// 番兵の追加
		array[n] = str;

		if (str == null) {
			return -1;
		}

		while (true) {
			if (str.equals(array[i])) {
				// 探索成功
				break;
			}
			i++;
		}
		return i == n ? -1 : i;
	}
}
